package cn.b.sky.mes.mm.service;

import java.util.List;

import cn.b.sky.mes.mm.model.StorageLocation;
import cn.b.sky.mes.mm.model.Warehouse;
import cn.b.sky.mes.mm.model.condition.StorageLocationCondition;
import cn.b.sky.common.model.BatchJobReport;

/**
 * 
 * <strong>Title : StorageLocationService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.mm.service<br></strong>
 * <strong>Description : </strong>@类注释说明写在此处@<br> 
 * <strong>Create on : 2016-3-1 上午10:47:00<br></strong>
 * <p>
 * @author zhaoxin01<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人    |    修改日期    |    修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface StorageLocationService {
  /**
   * 
   * <strong>Title : selectStorageLocationByCondition<br></strong>
   * <strong>Description : </strong>分页查询库位<br> 
   * <strong>Create on : 2016-3-1 上午10:19:47<br></strong>
   * <p>
   * @param storageLocationCondition
   * @return
   * List<StorageLocation>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<StorageLocation> selectStorageLocationByCondition(StorageLocationCondition storageLocationCondition);

  /**
   * 
   * <strong>Title : selectStorageLocationByCount<br></strong>
   * <strong>Description : </strong>查询库位条数<br> 
   * <strong>Create on : 2016-3-1 上午10:20:33<br></strong>
   * <p>
   * @param storageLocationCondition
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectStorageLocationCount(StorageLocationCondition storageLocationCondition);

  /**
   * 
   * <strong>Title : selectStorageLocation<br></strong>
   * <strong>Description : </strong>查询库位<br> 
   * <strong>Create on : 2016-3-1 上午10:21:43<br></strong>
   * <p>
   * @param siteCode
   * @param storageLocationCode
   * @return
   * StorageLocation
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  StorageLocation selectStorageLocation(String siteCode, String storageLocationCode);

  /**
   * 
   * <strong>Title : insertStorageLocation<br></strong>
   * <strong>Description : </strong>新增库位<br> 
   * <strong>Create on : 2016-3-1 上午10:22:45<br></strong>
   * <p>
   * @param storageLocation
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertStorageLocation(StorageLocation storageLocation);

  /**
   * 
   * <strong>Title : updateStorageLocation<br></strong>
   * <strong>Description : </strong>更新库位<br> 
   * <strong>Create on : 2016-3-1 上午10:23:13<br></strong>
   * <p>
   * @param storageLocation
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateStorageLocation(StorageLocation storageLocation);

  /**
   * 
   * <strong>Title : deleteStorageLocation<br></strong>
   * <strong>Description : </strong>删除库位<br> 
   * <strong>Create on : 2016-3-1 上午10:45:21<br></strong>
   * <p>
   * @param siteCode
   * @param storageLocationCode
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deleteStorageLocation(String siteCode, String storageLocationCode);

  /**
   * 
   * <strong>Title : selectWarehouseForStorageLocation<br></strong>
   * <strong>Description : </strong>查询未锁定且启用库位的仓库<br> 
   * <strong>Create on : 2016-3-1 上午11:02:31<br></strong>
   * <p>
   * @param siteCode
   * @return
   * List<Warehouse>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Warehouse> selectWarehouseForStorageLocation(String siteCode);

  /**
   * 
   * <strong>Title : selectStorageLocationByWarehouse<br></strong>
   * <strong>Description : </strong>根据仓库查询下面的库位<br> 
   * <strong>Create on : 2016-3-4 下午4:47:26<br></strong>
   * <p>
   * @param siteCode
   * @param warehouseCode
   * @return
   * List<StorageLocation>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<StorageLocation> selectStorageLocationByWarehouse(String siteCode, String warehouseCode);

  /**
   * 
   * <strong>Title : selectStorageLocationSuggests<br></strong>
   * <strong>Description : </strong>库位搜索建议<br> 
   * <strong>Create on : 2016年4月11日 下午7:48:00<br></strong>
   * <p>
   * @param condition
   * @return
   * List<StorageLocation>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<StorageLocation> selectStorageLocationSuggests(StorageLocationCondition condition);
}
